Skip to content

Isolate LHLFactorization dependency binding for JET - #1262

Merged
ChrisRackauckas merged 3 commits into
SciML:mainfrom
ChrisRackauckas-Claude:fix/lhlfactorization-jet-name-conflict
Aug 28, 2026
Merged

Isolate LHLFactorization dependency binding for JET#1262
ChrisRackauckas merged 3 commits into
SciML:mainfrom
ChrisRackauckas-Claude:fix/lhlfactorization-jet-name-conflict

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Aug 27, 2026

Copy link
Copy Markdown
Member

Draft — please ignore until reviewed by @ChrisRackauckas.

What changed and why

Import the dependency's ten LHL implementation names inside a private binding module, then copy only those bindings into the LinearSolve module. JET's package analysis treats importing the dependency module name LHLFactorization into LinearSolve as an invalid redefinition because LinearSolve already defines the public algorithm type with that name. Isolating the dependency module name removes the collision without exporting new names or suppressing a report.

This draft is stacked on #1261, which is itself stacked on #1260. It should be reviewed after both prerequisites.

Failing before

On clean main at 5dcf04d29038b5e4e4938157e9834fd8ddcf5f7a, JET.report_package(LinearSolve) reports seven errors beginning with:

invalid redefinition of constant LinearSolve.LHLFactorization

The full Julia 1.11.9 QA result was:

Quality Assurance | Pass 47 Fail 2 Error 1 Total 50 Time 6m37.8s

An adjacent-history check reports zero package-analysis errors at parent commit a449aab53f03a0aba833a502df409bf86b08de8f and seven after 47cdfb2eb81757346bb06cd8a3053a9736d15291, which added the dependency import and the algorithm type with the same name.

Passing after

The focused Julia 1.11.9 check reports:

stale imports: nothing
JET reports: 0

After rebasing the stack onto current main commit 43044f5e, I ran:

GROUP=QA julia +1.11.9 --project=. -e 'using Pkg; Pkg.test()'
GROUP=Core julia +1.11.9 --project=. -e 'using Pkg; Pkg.test()'
julia +1.12 --project=/home/crackauc/.julia/environments/runic -m Runic --check src/LinearSolve.jl src/blocked_lufact.jl src/lhl.jl
typos src/LinearSolve.jl src/blocked_lufact.jl src/lhl.jl
git diff --check origin/main...HEAD

Results:

JET Tests | 25 pass, 18 broken, total 43, 1m49.8s
Allocation QA | 55 pass, total 55, 1m19.7s
SupernodalLU Allocation QA | 6 pass, total 6, 11.8s
Quality Assurance | 50 pass, total 50, 8m22.5s
Testing LinearSolve tests passed

Core examples:
Re-solve | 143 pass, total 143
SupernodalLU internals | 91 pass, total 91
Default Alg Tests | 133 pass, total 133
Adjoint Sensitivity | 138 pass, total 138
ForwardDiff Overloads | 147 pass, total 147
SpecializingFactorizations | 18 pass, total 18
Testing LinearSolve tests passed

Runic, typos, and git diff --check exited 0 with no output. Documentation was not built because the helper module and copied bindings are internal and this changes no public API or documentation.

Review notes

An import alias did not eliminate the JET collision. The private binding module is intentionally narrow: it prevents the dependency module name from entering LinearSolve while leaving the existing internal call sites unchanged. The PR contains both prerequisite commits because it is stacked; the new change for this PR is the src/LinearSolve.jl binding isolation.

🤖 Generated with Claude Code

https://chatgpt.com/codex/tasks/01a03a17-ad6f-7131-82fc-d0fd57ea6512

ChrisRackauckas and others added 3 commits August 28, 2026 02:03
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://chatgpt.com/codex/tasks/01a03a17-ad6f-7131-82fc-d0fd57ea6512
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://chatgpt.com/codex/tasks/01a03a17-ad6f-7131-82fc-d0fd57ea6512
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://chatgpt.com/codex/tasks/01a03a17-ad6f-7131-82fc-d0fd57ea6512
@ChrisRackauckas-Claude
ChrisRackauckas-Claude force-pushed the fix/lhlfactorization-jet-name-conflict branch from 0b51f75 to 2d32e5f Compare August 28, 2026 06:41
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

The current LinearSolveAutotune downgrade failure is the already-reproduced clean-main PrettyTables v3 incompatibility, not this LHL binding change. This run fails with formatters expecting a vector: https://github.com/SciML/LinearSolve.jl/actions/runs/33148798376/job/98775814801. The focused fix, with clean-main bisect and passing lower-bound evidence, is #1264. I am leaving the fixes separate rather than adding an unrelated fourth commit to this stack.\n\nhttps://chatgpt.com/codex/tasks/01a03a17-ad6f-7131-82fc-d0fd57ea6512

@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review August 28, 2026 07:40
@ChrisRackauckas

Copy link
Copy Markdown
Member

Unfortunate but I think this is the cleanest solution.

@ChrisRackauckas
ChrisRackauckas merged commit ea86373 into SciML:main Aug 28, 2026
60 of 63 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants